package cc.jethro.jdxysdk.util

import android.content.Context
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.net.Uri

import java.io.IOException
import java.io.InputStream
import java.lang.StringBuilder
import java.util.ArrayList

/**
 * 获取Assets文件夹下的文件的工具
 * Created by jethro on 2017/5/17.
 */

object AssetsUtil {

    /**
     * 读取文件inputStream
     * @param context 获取input Stream需要用到他
     * *
     * @param fileName 文件名
     * *
     * @return
     */
    fun getInputStream(context: Context, fileName: String): InputStream? {
        var inputStream: InputStream? = null
        try {
            inputStream = context.assets.open(fileName)
        } catch (e: IOException) {
            e.printStackTrace()
        }

        return inputStream
    }

    /**
     * 获取bitmap图片
     * @param context 上下文环境
     * *
     * @param fileName 图片名字
     * *
     * @return
     */
    fun getBitmap(context: Context, fileName: String): Bitmap {
        val bitmap = BitmapFactory.decodeStream(getInputStream(context, fileName))
        return bitmap
    }

    /**
     * 根据文件名数组批量获取 bitmap 图片
     * @param context 上下文环境
     * *
     * @param fileNameList 文件名数组
     * *
     * @return bitmap 的 ArrayList 集合
     */
    fun getBitmapArrayList(context: Context, fileNameList: Array<String>): ArrayList<Bitmap> {
        val bitmaps = ArrayList<Bitmap>()

        for (fileName in fileNameList) {
            bitmaps.add(getBitmap(context, fileName))
        }

        return bitmaps
    }

    /**
     * 根据文件名 ArrayList 批量获取 bitmap 图片
     * @param context 上下文环境
     * *
     * @param fileNameList 文件名数组
     * *
     * @return bitmap 的 ArrayList 集合
     */
    fun getBitmapArrayList(context: Context, fileNameList: List<String>): ArrayList<Bitmap> {
        val bitmaps = ArrayList<Bitmap>()

        for (fileName in fileNameList) {
            bitmaps.add(getBitmap(context, fileName))
        }

        return bitmaps
    }

    fun  getUri(context: Context, filename: String): Uri {
        val sb = StringBuilder("file:///android_asset/")
        sb.append(filename)

        return Uri.parse(sb.toString())
    }

}
